package top.jacktgq.sxt.bio.udp.demo4;

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * @Author CandyWall
 * @Date 2019/10/20--18:51
 * @Description UDP基本类型发送端：
 *                     1、使用DatagramSocket指定端口 创建发送端
 *                     2、将基本类型转成字节数组
 *                     3、封装成DatagramPacket 包裹，需要指定目的地
 *                     4、阻塞式接收包裹send(DatagramPacket p)
 *                     5、释放资源
 */
public class UDPTypeClient {
    public static void main(String[] args) throws Exception {
        System.out.println("UDP发送方启动中...");
        //1、使用DatagramSocket指定端口 创建发送端
        DatagramSocket client = new DatagramSocket(8888);
        //2、准备数据 一定转成字节数组
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(baos));
        //操作数据类型+数据
        dos.writeUTF("码农辛酸泪");
        dos.writeInt(100);
        dos.writeDouble(3.14);
        dos.writeBoolean(false);
        dos.writeChar('a');
        dos.flush();
        byte[] data = baos.toByteArray();
        System.out.println(data.length);

        //3、封装成DatagramPacket 包裹，需要指定目的地
        DatagramPacket packet = new DatagramPacket(data, 0, data.length, new InetSocketAddress("localhost", 9999));

        //4、阻塞式接收包裹send(DatagramPacket p)
        client.send(packet);

        //5、释放资源
        client.close();
    }
}
